package com.itany.corejava.code11_IO.File;

import java.io.File;

/**
 * @author 石小俊
 * 2024年07月29日 9:24
 * 删除指定目录下所有的空目录,包括子目录下的空目录
 */
public class Test07_练习 {

    public static void main(String[] args) {
        File file = new File("E:/test");
        removeEmptyDirectory(file, "E:/test");

    }

    public static void removeEmptyDirectory(File file, String rootPath) {
        // 判断该文件是否存在
        if (!file.exists()) {
            return;
        }

        // 判断当前文件对象是否是一个目录
        if (file.isDirectory()) {
            // 判断该目录是否是空目录
            if (file.listFiles().length == 0) {
                // 删除空目录
                file.delete();
                System.out.println("已删除空目录:" + file.getAbsolutePath());
                // 当删除了该目录之后,该目录所在的父目录可能为空
                // 如果此时父目录为空,也需要删除
                if (!rootPath.equals(file.getAbsolutePath())) {
                    removeEmptyDirectory(file.getParentFile(), rootPath);
                }
            } else {
                // 列出当前目录中所有的子文件
                File[] files = file.listFiles();
                for (File f : files) {
                    // 递归删除
                    removeEmptyDirectory(f, rootPath);
                }
            }
        }
    }
}
